{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "73bd968b-d970-4a05-94ef-4e7abf990827",
   "metadata": {},
   "source": [
    "Chapter 18\n",
    "\n",
    "# Riemann和\n",
    "Book_3《数学要素》 | 鸢尾花书：从加减乘除到机器学习 (第二版)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5471f9d5-8f49-49e5-84ad-894dfc3d567d",
   "metadata": {},
   "source": [
    "这段代码使用 Riemann 和方法来近似计算函数\n",
    "\n",
    "$$\n",
    "f(x) = x^2\n",
    "$$\n",
    "\n",
    "在区间 $[a, b]$ 上的定积分。Riemann 和是一种将积分区域划分为小矩形的方式，通过矩形面积的累加来近似积分值。代码实现了三种 Riemann 和：\n",
    "\n",
    "1. **左 Riemann 和**：在每个子区间的左端点处计算函数值，将这些值乘以子区间宽度 $\\Delta x$ 并累加，给出总和\n",
    "\n",
    "   $$\n",
    "   S_{\\text{left}} = \\sum_{i=0}^{N-1} f(x_i) \\cdot \\Delta x\n",
    "   $$\n",
    "\n",
    "2. **中点 Riemann 和**：在每个子区间的中点处计算函数值，并乘以 $\\Delta x$，得到近似的积分总和\n",
    "\n",
    "   $$\n",
    "   S_{\\text{mid}} = \\sum_{i=0}^{N-1} f\\left(\\frac{x_i + x_{i+1}}{2}\\right) \\cdot \\Delta x\n",
    "   $$\n",
    "\n",
    "3. **右 Riemann 和**：在每个子区间的右端点处计算函数值并乘以 $\\Delta x$，形成和\n",
    "\n",
    "   $$\n",
    "   S_{\\text{right}} = \\sum_{i=1}^{N} f(x_i) \\cdot \\Delta x\n",
    "   $$\n",
    "\n",
    "代码分别计算了这三种 Riemann 和，并将其与定积分的真实值进行对比。通过绘制不同端点的矩形，该代码以直观的方式展示了 Riemann 和近似方法的效果，显示了每种方法在逼近积分值方面的差异。随着分区数量 $N$ 的增加，各种 Riemann 和都会更精确地逼近真实的定积分值。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cc049c2d-fd5e-45ad-965c-b1784f0bdeb9",
   "metadata": {},
   "source": [
    "## 导入包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "df247db7-4eb3-443f-bc19-249f9a16e489",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sympy import *  # 导入符号计算库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "1df15bdd-f104-43be-92f4-6986e138c770",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = Symbol('x')  # 定义符号变量 x"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "79264e3e-fcda-4942-9c39-c34628f457bb",
   "metadata": {},
   "source": [
    "## 定义被积函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "843d9eb9-f4a3-4770-bbef-cddf6bb0edaa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle x^{2}$"
      ],
      "text/plain": [
       "x**2"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f_x = x**2  # 定义函数 f(x) = x^2\n",
    "# f_x = x**2 + x + 1  # 可选函数 f(x) = x^2 + x + 1\n",
    "# f_x = exp(-x**2)  # 可选函数 f(x) = exp(-x^2)\n",
    "f_x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "5fb3739f-267d-4eca-b084-f3ce1edac031",
   "metadata": {},
   "outputs": [],
   "source": [
    "f_x_fcn = lambdify([x], f_x)  # 将符号函数转换为数值函数"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5a13dff6-6cc5-46f7-857d-2444e4842eee",
   "metadata": {},
   "source": [
    "## 计算不定积分和定积分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "e716d874-5431-4174-a10e-40a88337ae78",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{x^{3}}{3}$"
      ],
      "text/plain": [
       "x**3/3"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "integral_f_x = integrate(f_x, x)  # 计算 f(x) 的不定积分\n",
    "integral_f_x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "ddae00b8-8260-492d-af48-478afb581945",
   "metadata": {},
   "outputs": [],
   "source": [
    "integral_f_x_fcn = lambdify([x], integral_f_x)  # 将不定积分转换为数值函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "5bd7ffe8-5da6-4036-93e9-dbc49b17f278",
   "metadata": {},
   "outputs": [],
   "source": [
    "a = 0  # 积分下限\n",
    "b = 1  # 积分上限"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "e011dc26-3024-47d1-ab67-c559a41d02ba",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.3333333333333333"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "integral_a_b = integral_f_x_fcn(b) - integral_f_x_fcn(a)  # 使用不定积分计算定积分值\n",
    "integral_a_b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "d15b1ab4-3222-441d-b7de-afc2935fda28",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "$\\int_a^b  f(x)dx = 0.333$\n"
     ]
    }
   ],
   "source": [
    "integral_a_b_v2 = integrate(f_x, (x, a, b))  # 使用定积分公式计算积分值\n",
    "integral_a_b_v2 = float(integral_a_b_v2)  # 将结果转换为浮点数\n",
    "\n",
    "print(r'$\\int_a^b  f(x)dx = %0.3f$' % integral_a_b)  # 输出定积分结果"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "83ba7021-6738-4d17-a97b-1545dc5b3891",
   "metadata": {},
   "source": [
    "## 可视化 Riemann 和积分曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "3588bfa6-8555-4834-abdc-8938d61d0809",
   "metadata": {},
   "outputs": [],
   "source": [
    "num_interval = 20  # 将区间划分为 20 个小区间\n",
    "delta_x = (b - a) / num_interval  # 每个小区间的宽度\n",
    "\n",
    "x_array = np.linspace(a, b, num_interval + 1)  # 在积分区间内定义 x 的取值\n",
    "y_array = f_x_fcn(x_array)  # 计算每个 x 对应的函数值\n",
    "\n",
    "x_array_fine = np.linspace(a, b, 200)  # 定义更细的 x 取值范围，用于绘制平滑曲线\n",
    "y_array_fine = f_x_fcn(x_array_fine)  # 计算平滑曲线上的函数值"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "098edfb1-5538-4601-a74f-7c49ec9a5afb",
   "metadata": {},
   "source": [
    "## 左 Riemann 和"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "8e4bf29c-e0fd-481d-af3c-51cb0e8cd5b0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'f(x)')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(5, 5))\n",
    "ax = fig.add_subplot(1, 1, 1)\n",
    "\n",
    "plt.plot(x_array_fine, y_array_fine,\n",
    "         color='#0070C0')  # 绘制平滑曲线\n",
    "\n",
    "x_left = x_array[:-1]  # 使用左端点\n",
    "y_left = y_array[:-1]\n",
    "\n",
    "plt.plot(x_left, y_left, 'rx', markersize=10)  # 标记左端点\n",
    "\n",
    "plt.bar(x_left, y_left,\n",
    "        width=delta_x,\n",
    "        facecolor='#DEEAF6',\n",
    "        align='edge',\n",
    "        edgecolor='#B2B2B2')  # 绘制矩形表示左 Riemann 和\n",
    "\n",
    "ax.axvline(x=a, color='r', linestyle='-')  # 绘制积分下限\n",
    "ax.axvline(x=b, color='r', linestyle='-')  # 绘制积分上限\n",
    "\n",
    "left_riemann_sum = np.sum(f_x_fcn(x_left) * delta_x)  # 计算左 Riemann 和\n",
    "\n",
    "plt.title('Left Riemann sum (N = %0.0f) = %0.3f'\n",
    "          % (num_interval, left_riemann_sum))  # 显示左 Riemann 和的结果\n",
    "plt.xlim((a, b))\n",
    "plt.gca().spines['right'].set_visible(False)\n",
    "plt.gca().spines['top'].set_visible(False)\n",
    "plt.xlabel('x')\n",
    "plt.ylabel('f(x)')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d4dc097-4b9c-4adf-b6c1-822a64adf1f8",
   "metadata": {},
   "source": [
    "## 中点 Riemann 和"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "fdd148f6-50c1-4ab4-85e9-a7de04fcf07f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'f(x)')"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdUAAAHUCAYAAABs5bJSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABeIklEQVR4nO3deXhM1/8H8HcyM5ksJEEkEkvspZT6UoSirdpLFeXXDQ1K00aJNUhEgoi9i1haqaqlulCKFm0tQUppqKKtCmJJRCKTbZLMdn5/pEmNmaxmySTv1/PM08655975zCXeuds5dkIIASIiInpk9tYugIiIqKpgqBIREZkIQ5WIiMhEGKpEREQmwlAlIiIyEYYqERGRiTBUiYiITIShSkREZCIMVSIiIhNhqFrJpk2bYGdnBzs7Oxw5csRguRACzZs3h52dHZ555hm9ZXZ2dggLCyvzZ1y/fr3Uvo0bN8bYsWOL3h85cqTY2iqq8PsWvlxdXdGtWzds3779kWqnykOhUMDDwwNffPFFUVtYWBjs7Ozg6emJrKwsg3UaN26MF154wZJl4pNPPsHQoUPRuHFjODk5oXnz5nj77beRlJRktP8XX3yBJ598Eo6OjvDx8cGUKVOQnZ2t12fjxo2oX78+cnJyLPEVDKSkpGDs2LHw8PCAs7Mz/Pz88NNPP5Vp3e3bt6Nnz57w8vKCXC6Hj48PBg8ejJMnTxr0HT9+PNq2bQt3d3c4OTmhZcuWmDFjBlJTU/X6nTt3DoMGDUKjRo3g5OSE2rVrw8/PD1u2bDHJ962sGKpWVrNmTWzcuNGg/ejRo7h69Spq1qxpsCwuLg7jx4+3RHkmN2LECMTFxeHkyZNYt24dMjMz8eqrr2Lbtm16/QYNGoS4uDh4e3tbqVKqiAULFsDHxwejRo0yWHbv3j0sXbrUClUZmj9/PmrUqIHFixfjhx9+wMyZM7F371507NgRd+/e1eu7detWvPLKK3jqqafw/fffY/78+di0aROGDRum12/MmDFwcXGxynfMz89H79698dNPP+H999/H7t274eXlhf79++Po0aOlrp+Wlobu3bsjOjoaBw8exMqVK3H37l307NnTYP2cnBy89dZb2LZtG/bt24fx48djw4YN6NWrF1QqVVE/hUKBhg0bYvHixdi/fz82b96Mxo0b44033sDChQtNvg8qDUFW8emnnwoAYvz48cLJyUlkZGToLX/99deFn5+faNOmjejVq9cjfca1a9dK7evr6yvGjBlT9P7w4cMCgDh8+HCFPtsYAOKdd97Ra7t+/boAIHr27GmyzyHrSEtLE05OTmLdunV67fPnzxcARP/+/YWLi4tISkrSW+7r6ysGDRpkyVLF3bt3Ddp+/fVXAUBEREQUtWk0GuHt7S369u2r13fr1q0CgNi/f79e+/Lly4Wbm5vIyckxT+HFWLNmjQAgTp48WdSmVqvF448/Ljp37lyhbSoUCiGTycQbb7xRat/o6GgBQPz000+l9u3SpYto2LBhhWqyBTxStbJXXnkFAPROgWZkZOCbb76Bv7+/0XWMnf795Zdf0L1796LTU8HBwVCr1QbrqtVqzJw5E/Xq1YOzszOefvppnD59usz1njlzBkOGDEHt2rXh6OiIDh064Msvvyzz+g/z9fVF3bp1DY4Oijv9++OPP6J3795wdXWFs7MzunfvbnCKq/B04++//46XX34Zbm5uqF27NoKCgqDRaPDXX3+hf//+qFmzJho3bmxwZJGXl4dp06bhySefLFrXz88Pu3fvNqjfzs4O7777Lj7//HO0bt0azs7OaN++Pfbu3Wu0posXL+KVV16Bm5sbvLy84O/vj4yMjFL3U3x8PF544QV4enoWnZ4bNGgQbt26BQC4fv067OzssGnTJqM1Pvj35VH3T3E2bdoEjUZj9CgVABYuXAiNRlOmSxfm5unpadDWsWNHSCQS3Lx5s6jtl19+QVJSEt588029vi+//DJq1KiBXbt26bW/9tpryMzM1Dv9bQm7du3CY489Bj8/v6I2qVSK119/HadPn8bt27fLvc2aNWvC0dERUqm01L5169Yt+szSeHh4lKmfrWKoWpmrqytGjBiBmJiYorbt27fD3t6+2H+cHnbp0iX07t0bCoUCmzZtwrp16xAfH2/0FMuECROwfPlyjB49Grt378bw4cMxbNgwpKenl/o5hw8fRvfu3aFQKLBu3Trs3r0bTz75JEaNGmX0H/OyyMjIwP3799GyZctS+27ZsgV9+/aFq6srPvvsM3z55ZeoXbs2+vXrZ/Ta0ciRI9G+fXt88803mDBhAlatWoWpU6di6NChGDRoEHbt2oXnnnsOs2bNws6dO4vWy8/Px/379zF9+nR8++232L59O55++mkMGzYMmzdvNvic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",
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(5, 5))\n",
    "ax = fig.add_subplot(1, 1, 1)\n",
    "\n",
    "plt.plot(x_array_fine, y_array_fine,\n",
    "         color='#0070C0')  # 绘制平滑曲线\n",
    "\n",
    "x_mid = (x_array[:-1] + x_array[1:]) / 2  # 使用区间的中点\n",
    "y_mid = f_x_fcn(x_mid)\n",
    "\n",
    "plt.plot(x_mid, y_mid, 'rx', markersize=10)  # 标记中点\n",
    "\n",
    "plt.bar(x_mid, y_mid,\n",
    "        width=delta_x,\n",
    "        facecolor='#DEEAF6',\n",
    "        edgecolor='#B2B2B2')  # 绘制矩形表示中点 Riemann 和\n",
    "\n",
    "ax.axvline(x=a, color='r', linestyle='-')\n",
    "ax.axvline(x=b, color='r', linestyle='-')\n",
    "\n",
    "mid_riemann_sum = np.sum(f_x_fcn(x_mid) * delta_x)  # 计算中点 Riemann 和\n",
    "\n",
    "plt.title('Middle Riemann sum (N = %0.0f) = %0.3f'\n",
    "          % (num_interval, mid_riemann_sum))  # 显示中点 Riemann 和的结果\n",
    "plt.xlim((a, b))\n",
    "plt.gca().spines['right'].set_visible(False)\n",
    "plt.gca().spines['top'].set_visible(False)\n",
    "plt.xlabel('x')\n",
    "plt.ylabel('f(x)')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c3165547-6c4c-4ad8-9db2-b7ac1c15e9ef",
   "metadata": {},
   "source": [
    "## 右 Riemann 和"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "f9c7304f-e02b-4e5b-a766-2b033b4fe01d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'f(x)')"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(5, 5))\n",
    "ax = fig.add_subplot(1, 1, 1)\n",
    "\n",
    "plt.plot(x_array_fine, y_array_fine,\n",
    "         color='#0070C0')  # 绘制平滑曲线\n",
    "\n",
    "x_right = x_array[1:]  # 使用右端点\n",
    "y_right = f_x_fcn(x_right)\n",
    "\n",
    "plt.plot(x_right, y_right, 'rx', markersize=10)  # 标记右端点\n",
    "\n",
    "plt.bar(x_right, y_right,\n",
    "        width=-delta_x,\n",
    "        facecolor='#DEEAF6',\n",
    "        align='edge',\n",
    "        edgecolor='#B2B2B2')  # 绘制矩形表示右 Riemann 和\n",
    "\n",
    "ax.axvline(x=a, color='r', linestyle='-')\n",
    "ax.axvline(x=b, color='r', linestyle='-')\n",
    "\n",
    "right_riemann_sum = np.sum(f_x_fcn(x_right) * delta_x)  # 计算右 Riemann 和\n",
    "\n",
    "plt.title('Right Riemann sum (N = %0.0f) = %0.3f'\n",
    "          % (num_interval, right_riemann_sum))  # 显示右 Riemann 和的结果\n",
    "plt.xlim((a, b))\n",
    "plt.gca().spines['right'].set_visible(False)\n",
    "plt.gca().spines['top'].set_visible(False)\n",
    "plt.xlabel('x')\n",
    "plt.ylabel('f(x)')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "85a80909-2aac-49ed-bb7a-f8cc6b80ee7d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ecd322f4-f919-4be2-adc3-69d28ef25e69",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
